// interface 
// 自定义对象类型
interface MyObj {
    name?: string; // 加? 表示属性可以缺少
    readonly age: number; //readonly 只读
}

// 自定义数组类型
interface MyArray {
    [idx: number]: number | string
}

// 自定义函数类型
interface MyFunc {
    (a: string, b: number): void
}
// 类型别名定义函数类型
type MyFunc2 = (p: string) => void
let func: MyFunc = (a: string, b: number): void => { }

// extends 继承
interface MyExtents extends MyObj {
    isShow: boolean;
}

let myExtexds: MyExtents = {
    name: 'string',
    age: 11,
    isShow: true
}